No need for save_segments() on HVM 64b guest.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 21 Feb 2006 17:19:16 +0000 (18:19 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 21 Feb 2006 17:19:16 +0000 (18:19 +0100)
Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Signed-off-by: Xin Li <xin.b.li@intel.com>
xen/arch/x86/domain.c

index 72aab861bb3104ce7d2eac5e12340bf97c9f61fe..4731ea9a06436658f1a8402a898106d72ed7c48e 100644 (file)
@@ -610,9 +610,6 @@ static void save_segments(struct vcpu *v)
     struct cpu_user_regs      *regs = &ctxt->user_regs;
     unsigned int dirty_segment_mask = 0;
 
-    if ( HVM_DOMAIN(v) )
-        hvm_save_segments(v);
-
     regs->ds = read_segment_register(ds);
     regs->es = read_segment_register(es);
     regs->fs = read_segment_register(fs);
@@ -682,9 +679,15 @@ static void __context_switch(void)
                stack_regs,
                CTXT_SWITCH_STACK_BYTES);
         unlazy_fpu(p);
-        save_segments(p);
-        if ( HVM_DOMAIN(p) )
+        if ( !HVM_DOMAIN(p) )
+        {
+            save_segments(p);
+        }
+        else
+        {
+            hvm_save_segments(v);
             hvm_load_msrs();
+        }
     }
 
     if ( !is_idle_vcpu(n) )